package la.foton.atividade.util;

import java.util.MissingResourceException;
import java.util.ResourceBundle;

public enum PropertiesUtil {
	
   MESSAGE_EXCEPTION("la.foton.atividade.util.MessageException"),
      MESSAGE_ERROR("la.foton.atividade.util.MessageError"),
      MESSAGE_SUCESS("la.foton.atividade.util.MessageSucess"),
      MESSAGE_WARN("la.foton.atividade.util.MessageWarn");

	   private String propertiesName;
	   private ResourceBundle resource;
	   private String MENSAGEM_DEFAULT = "Erro na execução de sua solicitação";

	   private PropertiesUtil(String propertiesName)
	   {
	      this.propertiesName = propertiesName;
	   }

	   /**
	    * Recupera o valor do atributo propertiesName
	    * @return o propertiesName
	    */
	   public String getPropertiesName()
	   {
	      return propertiesName;
	   }
	   
	   /**
	    * Recupera o valor correspondente a chave informada
	    * @param String key
	    * @return String
	    */
	   public String getValue(String key) 
	   {      
	      try
	      {
	        resource = ResourceBundle.getBundle(propertiesName);
	        return resource.getString(key.trim());
	      }
	      catch (MissingResourceException e)
	      {
	         return MENSAGEM_DEFAULT;
	      }
	    
	   }
	   
	   /**
	    * Recupera o valor correspondente a chave informada
	    * @param String key
	    * @return String
	    */
	   public String getValue(Throwable exception) 
	   {      
		   StringBuilder sb = null;
	      try
	      {
	    	 sb = new StringBuilder(exception.getClass().getName());
	    	 return getValue(sb.toString());
	      }
	      catch (Exception e)
	      {
	         return MENSAGEM_DEFAULT;
	      }	     
	   }

	   /**
	    * Recupera o valor correspondente a chave informada
	    * @param Integer key
	    * @return String
	    */
	   public String getValue(Integer key) 
	   {
	      return getValue(String.valueOf(key));
	   }
	   
	   /**
	    * Verifica existe a chave informada existe no arquivo properties correspondente
	    * @param String key
	    * @return boolean
	    */
	   public boolean containsKey(String key)
	   {
	      try
	      {
	         resource = ResourceBundle.getBundle(getPropertiesName());
	         resource.getString(key);
	      }
	      catch (MissingResourceException e)
	      {
	         return false;
	      }
	      return true;
	   }

	   /**
	    * Verifica existe a chave informada existe no arquivo properties correspondente
	    * @param Integer key
	    * @return boolean
	    */
	   public boolean containsKey(Integer key)
	   {
	      return containsKey(String.valueOf(key));
	   }

}
